package com.cyj.dream.admin.service.system;

import com.cyj.dream.admin.model.system.SysModule;
import com.cyj.dream.admin.model.vo.LeftMenuVo;

import java.util.List;

/**
 * @Description: 系统菜单模块服务类
 * @BelongsProject: dream-DreamChardonnay
 * @BelongsPackage: com.dream.DreamChardonnay.service
 * @Author: ChenYongJia
 * @CreateTime: 2021-04-29 09:48
 * @Email: chen87647213@163.com
 * @Version: 1.0
 */
public interface SysModuleService {

    /**
     * 根据菜单对象信息查询用户菜单树
     *
     * @param sysModule 菜单对象
     * @return java.util.List<com.dream.DreamChardonnay.model.system.SysModule>
     * @date 2021/5/6 9:54
     * @author ChenYongJia
     * @version 1.0
     */
    List<SysModule> selectSysModuleTree(SysModule sysModule);

    /**
     * 根据用户查询的左侧权限菜单栏
     *
     * @return java.util.List<com.dream.DreamChardonnay.model.vo.LeftMenuVo>
     * @date 2021-6-8 09:56:57
     * @author ChenYongJia
     * @version 1.0
     */
    List<LeftMenuVo> selectParentSysModule();

    /**
     * 根据菜单模块名称查询菜单信息
     *
     * @param sysModule 菜单对象
     * @return com.dream.DreamChardonnay.model.system.SysModule
     * @date 2021/5/6 8:57
     * @author ChenYongJia
     * @version 1.0
     */
    SysModule selectBySysModuleName(SysModule sysModule);

    /**
     * 根据菜单id查询菜单信息
     *
     * @param sysModule 菜单id
     * @return com.dream.DreamChardonnay.model.system.SysModule
     * @date 2021/4/30 9:59
     * @author ChenYongJia
     * @version 1.0
     */
    SysModule selectModuleByModuleId(Long sysModule);

    /**
     * 根据节点信息查询菜单信息
     *
     * @param sysModulesParentId 菜单节点id信息
     * @return 'java.util.List<com.dream.DreamChardonnay.model.system.SysModule>'
     * @date 2021/5/6 9:58
     * @author ChenYongJia
     * @version 1.0
     */
    List<SysModule> selectSysModuleParent(Long sysModulesParentId);

    /**
     * 添加系统菜单信息
     *
     * @param sysModule 菜单对象
     * @return boolean
     * @date 2021/4/30 9:56
     * @author ChenYongJia
     * @version 1.0
     */
    boolean addModuleInfo(SysModule sysModule);

    /**
     * 修改系统菜单信息
     *
     * @param sysModule 菜单对象
     * @return boolean
     * @date 2021/4/30 9:57
     * @author ChenYongJia
     * @version 1.0
     */
    boolean updateModuleInfo(SysModule sysModule);

    /**
     * 逻辑删除菜单信息
     *
     * @param sysModule 菜单对象
     * @return boolean
     * @date 2021/4/30 9:58
     * @author ChenYongJia
     * @version 1.0
     */
    boolean deleteModuleInfo(SysModule sysModule);

    /**
     * 获取所有模块信息
     *
     * @return java.util.List<com.dream.DreamChardonnay.model.system.SysModule>
     * @date 2021/6/10 10:44
     * @author ChenYongJia
     * @version 1.0
     */
    List<SysModule> getModulesLists();

    /**
     * 根据角色查询该角色拥有的模块
     *
     * @param sysRoleId 角色id
     * @return java.util.List<com.dream.DreamChardonnay.model.system.SysModule>
     * @date 2021/6/10 10:45
     * @author ChenYongJia
     * @version 1.0
     */
    List<SysModule> getRoleModulesByRoleId(Long sysRoleId);

}
